package com.ipartek.formacion.bean;

import com.ipartek.formacion.excepciones.PersonaException;
import com.ipartek.formacion.util.Utilidades;

/**
 * Clase para crear objetos de tipo Persona
 * 
 * @author Roberto Nieto
 * 
 */
public class Persona {
	// ATRIBUTOS
	private int id; // pk, not_null, ai (autoincremental).
	private String nombre; // not_null
	private String apellido1; // not_null
	private String apellido2; // not_null
	private int edad; // not_null
	private String email; // not_null,uq(unique index)
	private String dni; // not_null,uq(unique index)
	private String rol; // not_null

	// CONSTRUCTORES
	// Constructor con array
	public Persona(String[] p) throws Exception {
		super();
		this.setRol(p[6]);
		this.setDni(p[5]);
		this.setEmail(p[4]);
		this.setEdad(Integer.parseInt(p[3]));
		this.setApellido2(p[2]);
		this.setApellido1(p[1]);
		this.setNombre(p[0]);
	}

	// Constructor con parametros
	public Persona(String nombre, String apellido1, String apellido2, int edad,
			String dni, String email, String rol) throws PersonaException {
		super();
		this.setNombre(nombre);
		this.setApellido1(apellido1);
		this.setApellido2(apellido2);
		this.setEdad(edad);
		this.setDni(dni);
		this.setEmail(email);
		this.setRol(rol);
	}

	// METODOS

	// METODOS1 Getters y Setters
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) throws PersonaException {
		if (!Utilidades.checkNombre(nombre)) {
			throw new PersonaException(PersonaException.COD_NOMBRE_NO_VALIDO,
					PersonaException.MSJ_NOMBRE_NO_VALIDO);
		}
		this.nombre = nombre;
	}

	public String getApellido1() {
		return apellido1;
	}

	public void setApellido1(String apellido1) throws PersonaException {
		if (!Utilidades.checkNombre(apellido1)) {
			throw new PersonaException(
					PersonaException.COD_APELLIDO1_NO_VALIDO,
					PersonaException.MSJ_APELLIDO1_NO_VALIDO);
		}
		this.apellido1 = apellido1;
	}

	public String getApellido2() {
		return apellido2;
	}

	public void setApellido2(String apellido2) throws PersonaException {
		if (!Utilidades.checkNombre(apellido2)) {
			throw new PersonaException(
					PersonaException.COD_APELLIDO2_NO_VALIDO,
					PersonaException.MSJ_APELLIDO2_NO_VALIDO);
		}

		this.apellido2 = apellido2;
	}

	public int getEdad() {
		return edad;
	}

	public void setEdad(int edad) throws PersonaException {
		if (Utilidades.checkEdad(edad)) {
			this.edad = edad;
		} else {
			// this.edad = 18;
			throw new PersonaException(
					PersonaException.COD_RANGO_EDAD_NO_VALIDO,
					PersonaException.MSJ_RANGO_EDAD_NO_VALIDO);
		}
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) throws PersonaException {
		if (Utilidades.checkEmail(email)) {
			this.email = email;
		} else {
			throw new PersonaException(PersonaException.COD_EMAIL_NO_VALIDO,
					PersonaException.MSJ_EMAIL_NO_VALIDO);
		}
	}

	public String getDni() {
		return dni;
	}

	public void setDni(String dni) throws PersonaException {
		if (Utilidades.checkDni(dni)) {
			this.dni = dni;
		} else {
			throw new PersonaException(PersonaException.COD_DNI_NO_VALIDO,
					PersonaException.MSJ_DNI_NO_VALIDO);
		}
	}

	public String getRol() {
		return rol;
	}

	public void setRol(String p) {
		this.rol = p;

	}

}
